﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using UygulamaTakbisService.wsTakbisServis;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

namespace UygulamaTakbisService
{
    public class BelgeBilgiDao : IDisposable
    {
        TAKBISWebService takbisServis = new TAKBISWebService();

        public bool BelgeBilgiKaydet(BelgeBilgi belgeBilgi)
        {
            bool sonuc;
            using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TakbisBilgiSorguLogConnection"].ToString()))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    con.Open();
                    SqlTransaction transaction = con.BeginTransaction("trans");
                    try
                    {
                        cmd.CommandText = @"INSERT INTO BelgeBilgi with(updlock) (BelgeID,BelgeTip,Aciklama,Duzenleyen,DuzenleyenTipi,Konu,Sayi,Tarih,KayitTarih) VALUES (@BelgeID,@BelgeTip,@Aciklama,@Duzenleyen,@DuzenleyenTipi,@Konu,@Sayi,@Tarih,GETDATE()) ";

                        if (belgeBilgi.BelgeID != null)
                            cmd.Parameters.Add("@BelgeID", belgeBilgi.BelgeID);
                        else
                            cmd.Parameters.Add("@BelgeID", DBNull.Value);

                        if (belgeBilgi.BelgeTip != null)
                            cmd.Parameters.Add("@BelgeTip", belgeBilgi.BelgeTip);
                        else
                            cmd.Parameters.Add("@BelgeTip", DBNull.Value);

                        if (belgeBilgi.Aciklama != null)
                            cmd.Parameters.Add("@Aciklama", belgeBilgi.Aciklama);
                        else
                            cmd.Parameters.Add("@Aciklama", DBNull.Value);

                        if (belgeBilgi.Duzenleyen != null)
                            cmd.Parameters.Add("@Duzenleyen", belgeBilgi.Duzenleyen);
                        else
                            cmd.Parameters.Add("@Duzenleyen", DBNull.Value);

                        if (belgeBilgi.DuzenleyenTipi != null)
                            cmd.Parameters.Add("@DuzenleyenTipi", (short)belgeBilgi.DuzenleyenTipi);
                        else
                            cmd.Parameters.Add("@DuzenleyenTipi", DBNull.Value);

                        if (belgeBilgi.Konu != null)
                            cmd.Parameters.Add("@Konu", belgeBilgi.Konu);
                        else
                            cmd.Parameters.Add("@Konu", DBNull.Value);

                        if (belgeBilgi.Sayi != null)
                            cmd.Parameters.Add("@Sayi", belgeBilgi.Sayi);
                        else
                            cmd.Parameters.Add("@Sayi", DBNull.Value);

                        if (belgeBilgi.Tarih != null)
                            cmd.Parameters.Add("@Tarih", belgeBilgi.Tarih);
                        else
                            cmd.Parameters.Add("@Tarih", DBNull.Value);

                        cmd.Connection = con;
                        cmd.Transaction = transaction;
                        cmd.ExecuteScalar();
                        transaction.Commit();
                        sonuc = true;
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        sonuc = false;
                        using (ExceptionLogDao el = new ExceptionLogDao())
                        {
                            el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                        }
                    }
                    finally
                    {
                        con.Close();
                        con.Dispose();
                        cmd.Dispose();
                    }
                    return sonuc;
                }
            }
        }

        public bool BelgeBilgiKayitliMi(BelgeBilgi belgeBilgi)
        {
            bool sonuc = false;
            try
            {
                using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TakbisBilgiSorguLogConnection"].ToString()))
                {
                    string sql = string.Format(@"SELECT * 
                                             FROM BelgeBilgi with(nolock) 
                                             WHERE BelgeID = {0} and
                                                   BelgeTip like '{1}' and
                                                   Aciklama like '{2}' and
                                                   Duzenleyen like '{3}' and
                                                   DuzenleyenTipi = {4} and
                                                   Konu like '{5}' and
                                                   Sayi like '{6}' and
                                                   day(Tarih) = {7} and
                                                   month(Tarih) = {8} and
                                                   year(Tarih) = {9} Order by KayitTarih Desc ", belgeBilgi.BelgeID, belgeBilgi.BelgeTip, belgeBilgi.Aciklama, belgeBilgi.Duzenleyen, belgeBilgi.DuzenleyenTipi, belgeBilgi.Konu, belgeBilgi.Sayi, belgeBilgi.Tarih.Value.Day, belgeBilgi.Tarih.Value.Month, belgeBilgi.Tarih.Value.Year);
                    using (SqlCommand cmd = new SqlCommand(sql))
                    {
                        using (SqlDataAdapter sda = new SqlDataAdapter())
                        {
                            cmd.Connection = con;
                            sda.SelectCommand = cmd;
                            cmd.CommandTimeout = 60000;
                            DataTable dt = new DataTable();
                            sda.Fill(dt);
                            if (dt.Rows.Count >= 1)
                                sonuc = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
            }
            return sonuc;
        }

        public void Dispose()
        {
        }
    }
}
